<template>
	<view>
		<!-- 筛选 -->
		<view class="filter">
			<text class="active">综合</text>
			<text>销量</text>
			<text>价格</text>
		</view>
		<!-- 商品列表 -->
		<scroll-view class="goods" scroll-y @scrolltolower="getMore">
			<view v-for="item in goodsList" :key="item.goods_id" class="item" @click="goDetail(item.goods_id)">
				<!-- 商品图片 -->
				<image class="pic" :src="item.goods_small_logo"></image>
				<!-- 商品信息 -->
				<view class="meta">
					<view class="name">{{ item.goods_name }}</view>
					<view class="price">
						<text>￥</text>{{item.goods_price}}<text>.00</text>
					</view>
				</view>
			</view>
			<!-- 加载更多 -->
			<view class="getMore">{{ goodsList.length === total ? '没有更多了~' : '正在加载...' }}</view>
		</scroll-view>
	</view>
</template>

<script>
	import {
		debounce
	} from 'lodash'
	export default {
		data() {
			return {
				goodsList: [],
				pagenum: 1,
				total: -1
			}
		},
		onLoad({
			name
		}) {
			this.name = name
			// console.log(name);
			this.getGoodsList(name)
		},
		methods: {
			goDetail(id) {
				uni.navigateTo({
					url: `/subpkg/pages/goods/index?id=${id}`
				})
			},
			// 获取商品列表
			async getGoodsList(name) {
				// 判断所有数据是否加载完成
				if (this.goodsList.length === this.total) {
					return
				}
				const res = await uni.$http.get('/api/public/v1/goods/search', {
					query: name,
					pagenum: this.pagenum,
					pagesize: 5
				})
				// console.log(res);
				// 存储总条数的数据
				this.total = res.data.message.total
				// 累加数据
				this.goodsList.push(...res.data.message.goods)
				// 页码加一
				this.pagenum++
			},
			// 每次触底会触发的事件
			getMore: debounce(function() {
				// console.log('触底啦');
				this.getGoodsList(this.name)
			}, 500)
		}
	}
</script>

<style scoped lang="scss">
	.filter {
		display: flex;
		height: 96rpx;
		line-height: 96rpx;
		border-bottom: 1rpx solid #ddd;

		/* #ifdef H5 */
		position: relative;
		z-index: 99;
		/* #endif */

		text {
			flex: 1;
			text-align: center;
			font-size: 30rpx;
			color: #333;

			&.active {
				color: #ea4451;
			}
		}
	}

	.goods {
		position: absolute;
		width: 100%;
		top: 97rpx;
		bottom: 0;
	}

	.item {
		display: flex;
		padding: 30rpx 20rpx 30rpx 0;
		margin-left: 20rpx;
		border-bottom: 1rpx solid #eee;

		&:last-child {
			border-bottom: none;
		}

		.pic {
			width: 200rpx;
			height: 200rpx;
			margin-right: 30rpx;
		}

		.meta {
			flex: 1;
			font-size: 27rpx;
			color: #333;
			position: relative;
		}

		.name {
			width: 100%;
			overflow: hidden;
			text-overflow: ellipsis;
			display: -webkit-box;
			-webkit-line-clamp: 2;
			-webkit-box-orient: vertical;
		}

		.price {
			position: absolute;
			bottom: 0;

			color: #ea4451;
			font-size: 33rpx;

			text {
				font-size: 22rpx;
			}
		}
	}
</style>
